package com.bw.module_live.im

import android.util.Log
import com.bw.lib_common.utils.LoggerUtils
import com.bw.lib_storage.UserMMKV
import com.tencent.imsdk.v2.V2TIMCallback
import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMMessage
import com.tencent.imsdk.v2.V2TIMSendCallback


/**
 * @author ytx
 * @date 2025-10-29 15:09
 * @description
 */
object LiveIM {
    const val TAG = "LiveIM"



    @JvmStatic
    fun loginIM(){
        if (UserMMKV.token.isNullOrEmpty()){
            return
        }
        //1:服务器登录成功返回userId，userSign 本地保存
        V2TIMManager.getInstance().login(UserMMKV.userId,UserMMKV.userSign, object : V2TIMCallback {
            override fun onSuccess() {
                LoggerUtils.d(TAG, "im登录成功")
            }

            override fun onError(code: Int, desc: String) {
                // 如果返回以下错误码，表示使用 UserSig 已过期，请您使用新签发的 UserSig 进行再次登录。
                // 1. ERR_USER_SIG_EXPIRED（6206）
                // 2. ERR_SVR_ACCOUNT_USERSIG_EXPIRED（70001）
                // 注意：其他的错误码，请不要在这里调用登录接口，避免 IM SDK 登录进入死循环。
                if (code == 6206 || code == 70001){
                    LoggerUtils.d(TAG, "im登录失败，使用新的userSign登录")
                    //和服务器要新的userSign重新登录
                }
            }
        })
    }

    @JvmStatic
    fun sendMessage( content:String, groupID:String){


        // 创建自定义消息
        val v2TIMMessage = V2TIMManager.getMessageManager().createCustomMessage(content.toByteArray())

// 发送消息
        V2TIMManager.getMessageManager().sendMessage(
            v2TIMMessage,
            null,
            groupID,
            V2TIMMessage.V2TIM_PRIORITY_NORMAL,
            false,
            null,
            object : V2TIMSendCallback<V2TIMMessage?> {
                override fun onProgress(progress: Int) {
                    // 自定义消息不会回调进度
                }


                override fun onSuccess(p0: V2TIMMessage?) {
                    Log.d(TAG, "消息发送成功: ")
                }

                override fun onError(code: Int, desc: String) {
                    // 发送群聊自定义消息失败
                    Log.d(TAG, "消息发送失败: ")
                }
            })
    }
}